home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 21
/
CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso
/
CUCD
/
Programming
/
PPCcforth
/
forth.h
< prev
next >
Wrap
C/C++ Source or Header
|
1985-12-27
|
3KB
|
124 lines
/*
* forth.h -- define function numbers for primitives, and other constants,
* externals, and globals used in forth.c and prims.c
*/
#define EXECUTE 0
#define LIT 1
#define BRANCH 2
#define ZBRANCH 3
#define PLOOP 4
#define PPLOOP 5
#define PDO 6
#define I 7
#define R 58
#define DIGIT 8
#define PFIND 9
#define ENCLOSE 10
#define KEY 11
#define PEMIT 12
#define QTERMINAL 13
#define CMOVE 14
#define USTAR 15
#define USLASH 16
#define AND 17
#define OR 18
#define XOR 19
#define SPFETCH 20
#define SPSTORE 21
#define RPFETCH 22
#define RPSTORE 23
#define SEMIS 24
#define LEAVE 25
#define TOR 26
#define FROMR 27
#define ZEQ 28
#define ZLESS 29
#define PLUS 30
#define DPLUS 31
#define MINUS 32
#define DMINUS 33
#define OVER 34
#define DROP 35
#define SWAP 36
#define DUP 37
#define TDUP 38
#define PSTORE 39
#define TOGGLE 40
#define FETCH 41
#define CFETCH 42
#define TFETCH 43
#define STORE 44
#define CSTORE 45
#define TSTORE 46
#define DOCOL 47
#define DOCON 48
#define DOVAR 49
#define DOUSE 50
#define SUBTRACT 51
#define EQUAL 52
#define NOTEQ 53
#define LESS 54
#define ROT 55
#define DODOES 56
#define DOVOC 57
/* 58 is above */
#define ALLOT 59
#define PBYE 60
#define TRON 61
#define TROFF 62
#define DOTRACE 63
#define PRSLW 64
#define PSAVE 65
#define PCOLD 66
/* memory */
#define GULPFRQ 256 /* if mem[LIMIT] - dp < GULPFRQ, then get */
#define GULPSIZE 1024 /* a block of GULPSIZE words */
/*
* User variables and other locations
*/
#define S0 UP+0 /* csp when stack is empty */
#define R0 UP+1 /* rsp when r stack is empty */
#define TIB UP+2 /* Terminal Input Buffer location */
#define WIDTH UP+3 /* screen width */
#define WARNING UP+4 /* print messages? */
#define FENCE UP+5 /* can not forget below this mark */
#define DP UP+6 /* points to first unallocated word */
#define VOCLINK UP+7 /* vocabulary link */
char *calloc(), *realloc(), *gets();
long lseek();
/* GLOBALS */
/* STACK POINTERS are registers of our FORTH machine. They, like everything
else, point into memory (mem[]). They are read by sp@ and rp@, set by sp!
and rp!. They are initialized by COLD. */
extern unsigned short csp;
extern unsigned short rsp;
/* This variable is all-important. It will be set to the top of the
data area by sbrk, and more memory will be allocated. All memory is
addressed as a subscript to this address -- mem[0] is the first memory
element, mem[1] is second, and so on.
*/
extern short *mem; /* points to the number of bytes in mem[0], as read
from COREFILE at startup */
/* two more machine registers: the interpretive pointer */
extern unsigned short ip; /* for an explanation of these, look in */
extern unsigned short w; /* interp.doc */
extern int trace, debug; /* global for tracing in next() */
extern int tracedepth, breakenable, breakpoint, qtermflag, forceip, nobuf;
extern FILE *blockfile;
extern long bfilesize;
extern char *bfilename;
extern char *cfilename;
extern char *sfilename;